NULL);
}
+static void
+gdk_quartz_display_init_input (GdkDisplay *display)
+{
+ GdkQuartzDisplay *display_quartz;
+ GdkDeviceManager *device_manager;
+ GList *list, *l;
+
+ display_quartz = GDK_QUARTZ_DISPLAY (display);
+ device_manager = gdk_display_get_device_manager (_gdk_display);
+
+ /* For backwards compabitility, just add floating devices that are
+ * not keyboards.
+ */
+ list = gdk_device_manager_list_devices (device_manager,
+ GDK_DEVICE_TYPE_FLOATING);
+ for (l = list; l; l = l->next)
+ {
+ GdkDevice *device = l->data;
+
+ if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
+ continue;
+
+ display_quartz->input_devices = g_list_prepend (display_quartz->input_devices,
+ g_object_ref (l->data));
+ }
+
+ g_list_free (list);
+
+ /* Now set "core" pointer to the first master device that is a pointer. */
+ list = gdk_device_manager_list_devices (device_manager,
+ GDK_DEVICE_TYPE_MASTER);
+
+ for (l = list; l; l = l->next)
+ {
+ GdkDevice *device = list->data;
+
+ if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE)
+ continue;
+
+ display->core_pointer = device;
+ break;
+ }
+
+ /* Add the core pointer to the devices list */
+ display_quartz->input_devices = g_list_prepend (display_quartz->input_devices,
+ g_object_ref (display->core_pointer));
+
+ g_list_free (list);
+}
+
GdkDisplay *
_gdk_quartz_display_open (const gchar *display_name)
{
_gdk_quartz_events_init ();
- _gdk_quartz_input_init ();
+ gdk_quartz_display_init_input (_gdk_display);
#if 0
/* FIXME: Remove the #if 0 when we have these functions */
return FALSE;
}
+static GList *
+_gdk_quartz_display_list_devices (GdkDisplay *display)
+{
+ g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
+
+ return GDK_QUARTZ_DISPLAY (display)->input_devices;
+}
+
gulong
_gdk_quartz_display_get_next_serial (GdkDisplay *display)
{
static void
_gdk_quartz_display_dispose (GObject *object)
{
+ GdkQuartzDisplay *display_quartz = GDK_QUARTZ_DISPLAY (object);
+
_gdk_quartz_display_manager_remove_display (gdk_display_manager_get (),
GDK_DISPLAY_OBJECT (object));
+ g_list_foreach (display_quartz->input_devices,
+ (GFunc) g_object_run_dispose, NULL);
+
G_OBJECT_CLASS (_gdk_quartz_display_parent_class)->dispose (object);
}
static void
_gdk_quartz_display_finalize (GObject *object)
{
+ GdkQuartzDisplay *display_quartz = GDK_QUARTZ_DISPLAY (object);
+
+ g_list_foreach (display_quartz->input_devices, (GFunc) g_object_unref, NULL);
+ g_list_free (display_quartz->input_devices);
+
G_OBJECT_CLASS (_gdk_quartz_display_parent_class)->finalize (object);
}